//package com.youhui.weixin.service;
//
//import com.youhui.weixin.common.exception.MythException;
//import com.youhui.weixin.common.info.MythExceptionList;
//import com.youhui.weixin.dao.GoodsDao;
//import com.youhui.weixin.domain.Goods;
//import com.youhui.weixin.utils.PropertiesLoad;
//import com.youhui.weixin.utils.excel.ExcelData;
//import com.youhui.weixin.utils.excel.Position;
//import com.youhui.weixin.utils.excel.ReadExcel;
//import com.youhui.weixin.utils.excel.ReflectUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//
//import java.io.FileInputStream;
//import java.text.ParseException;
//import java.text.SimpleDateFormat;
//import java.util.Date;
//import java.util.HashMap;
//import java.util.Map;
//import java.util.Properties;
//
///**
// * Created by https://github.com/kuangcp on 17-10-4  下午9:45
// * Excel 服务
// */
//@Service
//public class ExcelService {
//
//    @Autowired
//    private GoodsDao goodsDao;
//    private ReadExcel excel = new ReadExcel();
//
//    public void readExcel(FileInputStream inputStream) throws MythException {
//        ExcelData data = excel.readFileInputStream(inputStream);
//        readDataToDB(data);
//    }
//
//    public void readExcel(String path) throws MythException {
//        ExcelData data = excel.readFile(path);
//        readDataToDB(data);
//
//    }
//    private void readDataToDB(ExcelData data) throws MythException {
//        Properties mapping = PropertiesLoad.loadConfig("excel.properties");
////        ExcelData data = excel.readFile("/home/kcp/Downloads/2-2017-09-28.xls");
////        ExcelData data = excel.readFileInputStream(inputStream);
//        for (int row=1;row<=data.getRows();row++){
//            Map<String, Object> map = new HashMap<>();
//            // 得到配置文件的属性列 配置文件决定了加载Excel要读取的数据
//            for(Object key:mapping.keySet()){
////                System.out.println(key.toString()+"_"+mapping.getProperty(key.toString()));
//                // 从配置文件的映射关系 得到Excel对应的数据
//                Object temp= data.getContents().get(Position.init(row, readColNum(mapping.getProperty(key.toString()))));
//                // 得到数据放入map缓存中
//                if (temp==null || "".equals(temp) || " ".equals(temp) || "无".equals(temp)) {
//                    map.put(key.toString(),null);
//                }else{
//                    readData(map, key.toString(), temp);
//                }
//            }
////            for(int col=1;col<=data.getCols();col++){
////                String temp = data.getContents().get(Position.init(row,col));
////                System.out.println(row+"_"+col+":"+temp);
////
////            }
//            // 过滤掉没有优惠券的商品
//            if(map.get("mainKey")==null){
//                // 不做处理
//                map.clear();
//                continue;
//            }else{
//                // 插入数据库 利用反射
////                for(String key: map.keySet()){
////                    System.out.println(key+"--"+map.get(key));
////                }
//                Goods goods = (Goods)ReflectUtils.mapToEntity(map, Goods.class.getName());
//                dealGoods(goods);
////                System.out.println(goods.toString());
//                goodsDao.save(goods);
//                map.clear();
//            }
//            System.out.println();
//        }
//    }
//
//    /**
//     * 将配置文件中数据进行转换
//     * @param col 配置数据 字母
//     * @return 实际列数
//     */
//    private int readColNum(String col){
//        col = col.trim();
//        char target = col.toCharArray()[0];
////        System.out.println(target+":"+(target-'A'+1));
//        return target-'A'+1;
//    }
//
//    /**
//     * 将配置文件中定义的列，全部自行转换 得到正确类型 放入map
//     * @param map 缓存映射
//     * @param key 键
//     * @param object 值
//     */
//    private void readData(Map<String, Object> map, String key, Object object) throws MythException {
//        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
//        if("goodsId".equals(key)){
//            map.put(key, new Long(object.toString()));
//        }else if("discount".equals(key)){
//            String[] names = object.toString().split("减");
//            String discount = names[1].split("元")[0];
//            map.put(key, Integer.parseInt(discount));
//        }else if("typeId".equals(key)){
//            System.out.println("单独方法进行分析");
//        }else if("alreadyBuy".equals(key)){
//            map.put(key, Integer.valueOf(object.toString()));
//        }else if("price".equals(key)){
//            map.put(key, Float.valueOf(object.toString()));
//        }else if("startTime".equals(key) || "endTime".equals(key)){
//            try {
//                map.put(key, simpleDateFormat.parse(object.toString()));
//            } catch (ParseException e) {
//                throw new MythException(MythExceptionList.PARSE_TYPE_EXCEPTION, e, ExcelService.class);
//            }
//        }else{
//            map.put(key, object.toString());
//        }
//    }
//
//    /**
//     * 处理对象的详细属性
//     * TODO 根据配置文件来自动分类 分类需要沟通确定
//     */
//    public void dealGoods(Goods goods){
//        goods.setImportTime(new Date());
//        String name = goods.getName();
//        if(name.contains("女") || name.contains("裙") || name.contains("裙") || name.contains("裙")){
//            System.out.println("nv");
//        }
//    }
//}
